package cn.lzm.model;

import cn.hutool.core.util.StrUtil;
import cn.lizemin.constant.RpcConstant;
import lombok.Data;

/**
 * @author lzm
 * @Date 2024/8/6
 * @description 服务元信息，服务器的注册信息
 */
@Data
public class ServiceMetaInfo {

    /**
     * 服务名称 , 实际上是生产者提供的接口的类名
     */
    private String name;

    /**
     * 服务版本号
     */
    private String version = RpcConstant.DEFAULT_SERVICE_VERSION;

    /**
     * 服务域名
     */
    private String host;

    /**
     * 服务端口号
     */
    private int port;

    /**
     * 服务分组
     */
    private String group = "default";

    public String getServiceKey() {
        return StrUtil.format("{}:{}", name, version);
    }

    public String getServiceNodeKey() {
        return StrUtil.format("{}/{}:{}", getServiceKey(), host, port);
    }

    /**
     * 获取服务的完整地址
     *
     * @return 服务地址
     */
    public String getServiceAddress() {
        if (!StrUtil.contains(host, "http")) {
            return StrUtil.format("http://{}:{}", host, port);
        }
        return StrUtil.format("{}:{}", host, port);
    }

    public static void main(String[] args) {
        ServiceMetaInfo info = new ServiceMetaInfo();
        info.setName("lzm-rpc");
        info.setHost("127.0.0.1");
        info.setPort(8888);
        System.out.println(info.getServiceKey());
        System.out.println(info.getServiceNodeKey());
    }

}
